<?php
include_once('BaseTeste.php');
include_once('TesteContrato.php');

include_once('../model/Escolaridade.class.php');
include_once('../model/Operacao.class.php');
include_once('../model/Permissao.class.php');
include_once('../model/CandidatoVagaHistorico.class.php');
include_once('../model/CandidatoVaga.class.php');
include_once('../model/Candidato.class.php');
include_once('../model/SelecaoCandidatoHistorico.class.php');
include_once('../model/SelecaoCandidato.class.php');
include_once('../model/Selecao.class.php');

class TesteSelecao extends BaseTeste
{
    public $quantidade = 1;
    public $quantidadeVagas;
    
    public function TesteSelecao($quantidadeVagas = 10)
    {
        $this->quantidadeVagas = $quantidadeVagas;
    }
    
    public function testarCaso1()
    {
        //1. Inserir Contrato
        $testeContrato = new TesteContrato($this->quantidadeVagas);
        $contrato = new Contrato($testeContrato->testar(1));
        
        $vagas = $contrato->getVagas();
        
        foreach ($vagas as $v) {
            //2. Abrir Processo de Seleção
            $selecao = $this->abrirProcesso($v['vagaid']);
            
            //3. Informar Candidato
            $selecaoCandidato = $this->informarCandidato($selecao);
            
            //4. Aprovar Candidato
            $this->aprovarCandidato($selecaoCandidato);
            
            //5. Encaminhar Candidato
            $this->encaminharCandidato($selecaoCandidato);
            
            //6. Vincular Candidato
            $this->vincularCandidato($selecaoCandidato);
        }
        
        return $contrato->contratoid;
    }
    
    public function abrirProcesso($vagaid)
    {
        $this->logarNucleoCentral();
                
        $selecao = new Selecao();
        $selecao->abrirProcesso($vagaid, FALSE);
        return $selecao;
    }
    
    public function informarCandidato(Selecao $selecao)
    {
        sleep(1);
        
        $this->logarTerceirizada();
        
        $camposIniciais                 = array();
        $camposIniciais['cpf']          = $this->gerarCPFValido();
        $camposIniciais['nome']         = 'CGA ' . $selecao->vagaid . '. em ' . date('d/m/Y');
        $camposIniciais['contato']      = 8588888888;
        $camposIniciais['telefone2']    = 8599999999;
        
        $selecao->inserirCandidato($camposIniciais, TRUE);
        
        return $selecao->getCandidato();
    }
    
    public function aprovarCandidato(SelecaoCandidato $selecaoCandidato)
    {
        sleep(1);
        
        $this->logarNucleoCentral();
        
        $selecao = new Selecao($selecaoCandidato->selecaoid);
        $selecao->aprovarCandidato($selecaoCandidato->selecaocandidatoid, 'Gerado automaticamente.');
    }
    
    public function encaminharCandidato(SelecaoCandidato $selecaoCandidato)
    {
        sleep(1);
        
        $this->logarNucleoGestor();
        
        $escolaridade = new Escolaridade();
        $result = $escolaridade->listar();
        $result = pg_fetch_object($result, 0);
        
        $dadosComplementares = array();
        $dadosComplementares['txtNascimento']         = '17/07/1970';
        $dadosComplementares['ddlSexo']               = 'M';
        $dadosComplementares['ddlescolaridadeid']     = $result->escolaridadeid;
        $dadosComplementares['txtrg']                 = 2001010466089;
        $dadosComplementares['txtemissaorg']          = '01/01/2000';
        $dadosComplementares['txtVinculacaoSugestao'] = '01/01/2020';
        
        $selecao = new Selecao($selecaoCandidato->selecaoid);
        $selecao->encaminharCandidatoVinculacao($selecaoCandidato->selecaocandidatoid, 'Gerado automaticamente', $dadosComplementares);
    }
    
    public function vincularCandidato(SelecaoCandidato $selecaoCandidato)
    {
        sleep(1);
        
        $this->logarTerceirizada();
        
        $registroTerceirizada = rand(1,9999);
        
        $selecao = new Selecao($selecaoCandidato->selecaoid);
        $selecao->vincularCandidato($selecaoCandidato->selecaocandidatoid, $registroTerceirizada, date('d/m/Y'));
    }
    
    public function randomize($n)
    {
        return round(rand(0,$n), 0);
    }
    
    public function mod($dividendo, $divisor)
    {
        return round($dividendo - (floor($dividendo/$divisor)*$divisor), 0);
    }
    
    public function gerarCPFValido($comPontos = TRUE)
    {
        $n = 9;
        $n1 = $this->randomize($n);
        $n2 = $this->randomize($n);
        $n3 = $this->randomize($n);
        $n4 = $this->randomize($n);
        $n5 = $this->randomize($n);
        $n6 = $this->randomize($n);
        $n7 = $this->randomize($n);
        $n8 = $this->randomize($n);
        $n9 = $this->randomize($n);
        
        $d1 = $n9*2+$n8*3+$n7*4+$n6*5+$n5*6+$n4*7+$n3*8+$n2*9+$n1*10;
        
        $d1 = 11 - ($this->mod($d1,11));
        
        if ($d1>=10) $d1 = 0;
		$d2 = $d1*2+$n9*3+$n8*4+$n7*5+$n6*6+$n5*7+$n4*8+$n3*9+$n2*10+$n1*11;
		$d2 = 11 - ($this->mod($d2,11));
		if ($d2>=10) $d2 = 0;
		$retorno = '';
		if ($comPontos) $cpf = ''.$n1.$n2.$n3.'.'.$n4.$n5.$n6.'.'.$n7.$n8.$n9.'-'.$d1.$d2;
		else $cpf = $n1.$n2.$n3.$n4.$n5.$n6.$n7.$n8.$n9.$d1.$d2;
        
		return $cpf;
    }
}
?>